package generator;


import com.baomidou.mybatisplus.annotation.DbType;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.generator.AutoGenerator;
import com.baomidou.mybatisplus.generator.config.DataSourceConfig;
import com.baomidou.mybatisplus.generator.config.GlobalConfig;
import com.baomidou.mybatisplus.generator.config.PackageConfig;
import com.baomidou.mybatisplus.generator.config.StrategyConfig;
import com.baomidou.mybatisplus.generator.config.rules.NamingStrategy;

/**
 * @author VernHe
 * @date 2021年11月07日 18:55
 */
public class Main {
    public static void main (String[] args){
        //1、全局配置
        GlobalConfig config = new GlobalConfig();
        //不开启AR模式
        config.setActiveRecord(false)
                //作者
                .setAuthor("hefuren")
                //生成路径，桌面
                .setOutputDir("C:/Users/Administrator/Desktop")
                //第二次生成会把第一次生成的覆盖掉
                .setFileOverride(true)
                //主键自增
                .setIdType(IdType.AUTO)
                //生成的service接口名字首字母是否为I，这样设置就没有I
                .setServiceName("%sService")
                //生成resultMap
                .setBaseResultMap(true)
                //在xml中生成基础列
                .setBaseColumnList(true);
        //2、数据源配置
        DataSourceConfig dataSourceConfig = new DataSourceConfig();
        //数据库类型
        dataSourceConfig.setDbType(DbType.MYSQL)
                .setDriverName("com.mysql.jdbc.Driver")
                .setUrl("jdbc:mysql://47.101.206.1:3306/hg_volunteer?useUnicode=true&characterEncoding=utf-8")
                .setUsername("admin")
                .setPassword("mypass");
        //3、策略配置
        StrategyConfig strategyConfig = new StrategyConfig();
        //开启全局大写命名
        strategyConfig.setCapitalMode(true)
                //下划线到驼峰的命名方式
                .setNaming(NamingStrategy.underline_to_camel)
                //使用lombok
                .setEntityLombokModel(true)
                //逆向工程使用的表
                .setInclude("volunteer","volunteer_activity");
        //4、包名策略配置
        PackageConfig packageConfig = new PackageConfig();
        //设置包名的parent
        packageConfig.setParent("com.volunteer")
                .setMapper("mapper")
                .setService("service")
                .setController("controller")
                .setEntity("entity")
                //设置xml文件的目录
                .setXml("mapper");
        //5、整合配置
        AutoGenerator autoGenerator = new AutoGenerator();
        autoGenerator.setGlobalConfig(config)
                .setDataSource(dataSourceConfig)
                .setStrategy(strategyConfig)
                .setPackageInfo(packageConfig);
        //6、执行
        autoGenerator.execute();
    }
}
